使用rust创建websocket服务器 |
您所在的位置:网站首页 › rust 服务端socket › 使用rust创建websocket服务器 |
最近需要做实时推送相关的应用,所以继续调研了一下websocket,在15年底的时候曾经使用过 Gru 来做聊天推送, 但是那时候没仔细研究过websocket的细节。现在趁机自己构思一下 使用 ws-rs 构建websocket服务端按照 Guide 搭建服务端应用,代码见下: cargo new ws-server1 --bin extern crate ws; use ws::listen; fn main() { listen("127.0.0.1:3012", |out| { move |msg| { println!("received msg: {}", msg); out.broadcast(msg) } }).unwrap() }cargo run 运行服务端 服务端推送往socket里面推送消息,代码见下: cargo new ws-client1 --bin extern crate ws; use ws::{connect, CloseCode}; fn main() { connect("ws://127.0.0.1:3012", |out| { out.send("Hello WebSocket").unwrap(); move |msg| { println!("Got message: {}", msg); out.close(CloseCode::Normal) } }).unwrap() }运行 cargo run,这时候会看到服务端输出received msg: Hello WebSocket,客户端输出Got message: Hello WebSocket 客户端连接创建2个websocket客户端连接,打开2个chrome标签,分别在终端执行 ws = new WebSocket('ws://127.0.0.1:3012'); // 创建连接 ws.addEventListener('message', function (event) { console.log('Message from server ', event.data); }); // 监听服务端 ws.send('from browser'); // 可以在2个console中互相发消息玩能发现websocket会自动检测连接,如果连接断开会提示 =WebSocket is already in CLOSING or CLOSED state.= 这也省去了手动发送心跳包 检测连接的麻烦 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |